/**
 */
package org.mro.grib.model.files.secondEdition.products.impl;

import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EDataType;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;

import org.eclipse.emf.ecore.impl.EFactoryImpl;

import org.eclipse.emf.ecore.plugin.EcorePlugin;

import org.mro.grib.model.files.secondEdition.products.*;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model <b>Factory</b>.
 * <!-- end-user-doc -->
 * @generated
 */
public class ProductsFactoryImpl extends EFactoryImpl implements ProductsFactory {
	/**
	 * Creates the default factory implementation.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public static ProductsFactory init() {
		try {
			ProductsFactory theProductsFactory = (ProductsFactory)EPackage.Registry.INSTANCE.getEFactory(ProductsPackage.eNS_URI);
			if (theProductsFactory != null) {
				return theProductsFactory;
			}
		}
		catch (Exception exception) {
			EcorePlugin.INSTANCE.log(exception);
		}
		return new ProductsFactoryImpl();
	}

	/**
	 * Creates an instance of the factory.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ProductsFactoryImpl() {
		super();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EObject create(EClass eClass) {
		switch (eClass.getClassifierID()) {
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE40: return createProductDefinitionTemplate40();
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE41: return createProductDefinitionTemplate41();
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE42: return createProductDefinitionTemplate42();
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE43: return createProductDefinitionTemplate43();
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE44: return createProductDefinitionTemplate44();
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE45: return createProductDefinitionTemplate45();
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE46: return createProductDefinitionTemplate46();
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE47: return createProductDefinitionTemplate47();
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE48: return createProductDefinitionTemplate48();
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE49: return createProductDefinitionTemplate49();
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE410: return createProductDefinitionTemplate410();
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE411: return createProductDefinitionTemplate411();
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE412: return createProductDefinitionTemplate412();
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE413: return createProductDefinitionTemplate413();
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE414: return createProductDefinitionTemplate414();
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE415: return createProductDefinitionTemplate415();
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE420: return createProductDefinitionTemplate420();
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE430: return createProductDefinitionTemplate430();
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE431: return createProductDefinitionTemplate431();
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE432: return createProductDefinitionTemplate432();
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE440: return createProductDefinitionTemplate440();
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE441: return createProductDefinitionTemplate441();
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE442: return createProductDefinitionTemplate442();
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE443: return createProductDefinitionTemplate443();
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE444: return createProductDefinitionTemplate444();
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE445: return createProductDefinitionTemplate445();
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE446: return createProductDefinitionTemplate446();
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE447: return createProductDefinitionTemplate447();
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE448: return createProductDefinitionTemplate448();
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE451: return createProductDefinitionTemplate451();
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE491: return createProductDefinitionTemplate491();
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE4254: return createProductDefinitionTemplate4254();
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE41000: return createProductDefinitionTemplate41000();
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE41001: return createProductDefinitionTemplate41001();
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE41002: return createProductDefinitionTemplate41002();
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE41100: return createProductDefinitionTemplate41100();
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE41101: return createProductDefinitionTemplate41101();
			default:
				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
		}
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Object createFromString(EDataType eDataType, String initialValue) {
		switch (eDataType.getClassifierID()) {
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE_NUMBER:
				return createProductDefinitionTemplateNumberFromString(eDataType, initialValue);
			default:
				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
		}
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public String convertToString(EDataType eDataType, Object instanceValue) {
		switch (eDataType.getClassifierID()) {
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE_NUMBER:
				return convertProductDefinitionTemplateNumberToString(eDataType, instanceValue);
			default:
				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
		}
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ProductDefinitionTemplate40 createProductDefinitionTemplate40() {
		ProductDefinitionTemplate40Impl productDefinitionTemplate40 = new ProductDefinitionTemplate40Impl();
		return productDefinitionTemplate40;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ProductDefinitionTemplate41 createProductDefinitionTemplate41() {
		ProductDefinitionTemplate41Impl productDefinitionTemplate41 = new ProductDefinitionTemplate41Impl();
		return productDefinitionTemplate41;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ProductDefinitionTemplate42 createProductDefinitionTemplate42() {
		ProductDefinitionTemplate42Impl productDefinitionTemplate42 = new ProductDefinitionTemplate42Impl();
		return productDefinitionTemplate42;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ProductDefinitionTemplate43 createProductDefinitionTemplate43() {
		ProductDefinitionTemplate43Impl productDefinitionTemplate43 = new ProductDefinitionTemplate43Impl();
		return productDefinitionTemplate43;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ProductDefinitionTemplate44 createProductDefinitionTemplate44() {
		ProductDefinitionTemplate44Impl productDefinitionTemplate44 = new ProductDefinitionTemplate44Impl();
		return productDefinitionTemplate44;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ProductDefinitionTemplate45 createProductDefinitionTemplate45() {
		ProductDefinitionTemplate45Impl productDefinitionTemplate45 = new ProductDefinitionTemplate45Impl();
		return productDefinitionTemplate45;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ProductDefinitionTemplate46 createProductDefinitionTemplate46() {
		ProductDefinitionTemplate46Impl productDefinitionTemplate46 = new ProductDefinitionTemplate46Impl();
		return productDefinitionTemplate46;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ProductDefinitionTemplate47 createProductDefinitionTemplate47() {
		ProductDefinitionTemplate47Impl productDefinitionTemplate47 = new ProductDefinitionTemplate47Impl();
		return productDefinitionTemplate47;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ProductDefinitionTemplate48 createProductDefinitionTemplate48() {
		ProductDefinitionTemplate48Impl productDefinitionTemplate48 = new ProductDefinitionTemplate48Impl();
		return productDefinitionTemplate48;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ProductDefinitionTemplate49 createProductDefinitionTemplate49() {
		ProductDefinitionTemplate49Impl productDefinitionTemplate49 = new ProductDefinitionTemplate49Impl();
		return productDefinitionTemplate49;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ProductDefinitionTemplate410 createProductDefinitionTemplate410() {
		ProductDefinitionTemplate410Impl productDefinitionTemplate410 = new ProductDefinitionTemplate410Impl();
		return productDefinitionTemplate410;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ProductDefinitionTemplate411 createProductDefinitionTemplate411() {
		ProductDefinitionTemplate411Impl productDefinitionTemplate411 = new ProductDefinitionTemplate411Impl();
		return productDefinitionTemplate411;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ProductDefinitionTemplate412 createProductDefinitionTemplate412() {
		ProductDefinitionTemplate412Impl productDefinitionTemplate412 = new ProductDefinitionTemplate412Impl();
		return productDefinitionTemplate412;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ProductDefinitionTemplate413 createProductDefinitionTemplate413() {
		ProductDefinitionTemplate413Impl productDefinitionTemplate413 = new ProductDefinitionTemplate413Impl();
		return productDefinitionTemplate413;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ProductDefinitionTemplate414 createProductDefinitionTemplate414() {
		ProductDefinitionTemplate414Impl productDefinitionTemplate414 = new ProductDefinitionTemplate414Impl();
		return productDefinitionTemplate414;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ProductDefinitionTemplate415 createProductDefinitionTemplate415() {
		ProductDefinitionTemplate415Impl productDefinitionTemplate415 = new ProductDefinitionTemplate415Impl();
		return productDefinitionTemplate415;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ProductDefinitionTemplate420 createProductDefinitionTemplate420() {
		ProductDefinitionTemplate420Impl productDefinitionTemplate420 = new ProductDefinitionTemplate420Impl();
		return productDefinitionTemplate420;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ProductDefinitionTemplate430 createProductDefinitionTemplate430() {
		ProductDefinitionTemplate430Impl productDefinitionTemplate430 = new ProductDefinitionTemplate430Impl();
		return productDefinitionTemplate430;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ProductDefinitionTemplate431 createProductDefinitionTemplate431() {
		ProductDefinitionTemplate431Impl productDefinitionTemplate431 = new ProductDefinitionTemplate431Impl();
		return productDefinitionTemplate431;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ProductDefinitionTemplate432 createProductDefinitionTemplate432() {
		ProductDefinitionTemplate432Impl productDefinitionTemplate432 = new ProductDefinitionTemplate432Impl();
		return productDefinitionTemplate432;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ProductDefinitionTemplate440 createProductDefinitionTemplate440() {
		ProductDefinitionTemplate440Impl productDefinitionTemplate440 = new ProductDefinitionTemplate440Impl();
		return productDefinitionTemplate440;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ProductDefinitionTemplate441 createProductDefinitionTemplate441() {
		ProductDefinitionTemplate441Impl productDefinitionTemplate441 = new ProductDefinitionTemplate441Impl();
		return productDefinitionTemplate441;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ProductDefinitionTemplate442 createProductDefinitionTemplate442() {
		ProductDefinitionTemplate442Impl productDefinitionTemplate442 = new ProductDefinitionTemplate442Impl();
		return productDefinitionTemplate442;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ProductDefinitionTemplate443 createProductDefinitionTemplate443() {
		ProductDefinitionTemplate443Impl productDefinitionTemplate443 = new ProductDefinitionTemplate443Impl();
		return productDefinitionTemplate443;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ProductDefinitionTemplate444 createProductDefinitionTemplate444() {
		ProductDefinitionTemplate444Impl productDefinitionTemplate444 = new ProductDefinitionTemplate444Impl();
		return productDefinitionTemplate444;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ProductDefinitionTemplate445 createProductDefinitionTemplate445() {
		ProductDefinitionTemplate445Impl productDefinitionTemplate445 = new ProductDefinitionTemplate445Impl();
		return productDefinitionTemplate445;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ProductDefinitionTemplate446 createProductDefinitionTemplate446() {
		ProductDefinitionTemplate446Impl productDefinitionTemplate446 = new ProductDefinitionTemplate446Impl();
		return productDefinitionTemplate446;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ProductDefinitionTemplate447 createProductDefinitionTemplate447() {
		ProductDefinitionTemplate447Impl productDefinitionTemplate447 = new ProductDefinitionTemplate447Impl();
		return productDefinitionTemplate447;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ProductDefinitionTemplate448 createProductDefinitionTemplate448() {
		ProductDefinitionTemplate448Impl productDefinitionTemplate448 = new ProductDefinitionTemplate448Impl();
		return productDefinitionTemplate448;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ProductDefinitionTemplate451 createProductDefinitionTemplate451() {
		ProductDefinitionTemplate451Impl productDefinitionTemplate451 = new ProductDefinitionTemplate451Impl();
		return productDefinitionTemplate451;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ProductDefinitionTemplate491 createProductDefinitionTemplate491() {
		ProductDefinitionTemplate491Impl productDefinitionTemplate491 = new ProductDefinitionTemplate491Impl();
		return productDefinitionTemplate491;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ProductDefinitionTemplate4254 createProductDefinitionTemplate4254() {
		ProductDefinitionTemplate4254Impl productDefinitionTemplate4254 = new ProductDefinitionTemplate4254Impl();
		return productDefinitionTemplate4254;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ProductDefinitionTemplate41000 createProductDefinitionTemplate41000() {
		ProductDefinitionTemplate41000Impl productDefinitionTemplate41000 = new ProductDefinitionTemplate41000Impl();
		return productDefinitionTemplate41000;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ProductDefinitionTemplate41001 createProductDefinitionTemplate41001() {
		ProductDefinitionTemplate41001Impl productDefinitionTemplate41001 = new ProductDefinitionTemplate41001Impl();
		return productDefinitionTemplate41001;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ProductDefinitionTemplate41002 createProductDefinitionTemplate41002() {
		ProductDefinitionTemplate41002Impl productDefinitionTemplate41002 = new ProductDefinitionTemplate41002Impl();
		return productDefinitionTemplate41002;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ProductDefinitionTemplate41100 createProductDefinitionTemplate41100() {
		ProductDefinitionTemplate41100Impl productDefinitionTemplate41100 = new ProductDefinitionTemplate41100Impl();
		return productDefinitionTemplate41100;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ProductDefinitionTemplate41101 createProductDefinitionTemplate41101() {
		ProductDefinitionTemplate41101Impl productDefinitionTemplate41101 = new ProductDefinitionTemplate41101Impl();
		return productDefinitionTemplate41101;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ProductDefinitionTemplateNumber createProductDefinitionTemplateNumberFromString(EDataType eDataType, String initialValue) {
		ProductDefinitionTemplateNumber result = ProductDefinitionTemplateNumber.get(initialValue);
		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
		return result;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public String convertProductDefinitionTemplateNumberToString(EDataType eDataType, Object instanceValue) {
		return instanceValue == null ? null : instanceValue.toString();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ProductsPackage getProductsPackage() {
		return (ProductsPackage)getEPackage();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @deprecated
	 * @generated
	 */
	@Deprecated
	public static ProductsPackage getPackage() {
		return ProductsPackage.eINSTANCE;
	}

} //ProductsFactoryImpl
